// 导入 NestJS 公共模块中的异常过滤器相关类
import { ExceptionFilter, Catch, ArgumentsHost, HttpException } from '@nestjs/common';
// 导入 Express 框架中的请求和响应接口
import { Request, Response } from 'express';

// 声明该类用于捕获 HttpException 异常
@Catch(HttpException)
// 定义一个 HTTP 异常过滤器类，实现 ExceptionFilter 接口
export class HttpExceptionFilter implements ExceptionFilter {
  // 实现 catch 方法，用于处理捕获到的异常
  catch(exception: HttpException, host: ArgumentsHost) {
    // 切换到 HTTP 上下文
    const ctx = host.switchToHttp();
    // 获取响应对象
    const response = ctx.getResponse<Response>();
    // 获取请求对象
    const request = ctx.getRequest<Request>();
    // 获取异常状态码
    const status = exception.getStatus();

    // 设置响应状态码并返回包含异常信息的 JSON 对象
    response.status(status).json({ 
      statusCode: status, 
      timestamp: new Date().toISOString(), 
      path: request.url, 
      message: exception.message, 
    }); 
  }
}